package com.ruoyi.central.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.ruoyi.common.annotation.Length;
import com.ruoyi.common.enums.common.TaskStatusEnum;
import com.ruoyi.common.validation.group.InsertGroup;
import com.ruoyi.common.validation.group.UpdateGroup;
import lombok.Data;
import com.ruoyi.common.annotation.Excel;
import javax.validation.constraints.NotNull;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 任务执行指令对象 top_central_task_cmd_run
 *
 * @author SunLuQuan
 * @date 2022-05-29
 */
@Data
@TableName("top_central_task_cmd_run")
public class TopCentralTaskCmdRun extends BaseEntity{

private static final long serialVersionUID = 1L;

    /** 编号 */
    @TableId
    @Length(min = 0,max = 10,message="编号 数据长度不能大于 10")
    private Integer id;

    /** 任务指令编号 */
    @Excel(name = "任务指令编号")
    @NotNull(groups = {InsertGroup.class,UpdateGroup.class},message = "任务指令编号不能为空")
    @Length(min = 0,max = 10,message="任务指令编号 数据长度不能大于 10")
    private Integer taskCmdId;

    /** 执行工序编号 */
    @Excel(name = "执行工序编号")
    @NotNull(groups = {InsertGroup.class,UpdateGroup.class},message = "执行工序编号不能为空")
    @Length(max = 10,min = 0,message="执行工序编号 数据长度不能大于 10")
    private Integer processStepRunId;

    /** 指令执行状态 */
    @Excel(name = "指令执行状态")
    @NotNull(groups = {InsertGroup.class,UpdateGroup.class},message = "指令执行状态不能为空")
    @Length(min = 0,max = 1,message="指令执行状态 数据长度不能大于 1")
    private Integer taskStatus;

    /** 参数 */
    @Excel(name = "执行所需要参数")
    private String args;

    /** 修改者 */
    @Excel(name = "修改者")
    @Length(min=0,max=255,message="修改者 数据长度不能大于 255")
    @TableField(fill = FieldFill.UPDATE)
    private String updateBy;

    /** 描述 */
    @Excel(name = "描述")
    @Length(min=0,max=255,message="描述 数据长度不能大于 255")
    private String remark;

    @TableField(exist = false)
    private TopCentralTaskCmd taskCmd;

    /** 需要更新的任务执行执行对象*/
    @TableField(exist = false)
    private TopCentralTaskCmdRun updateTaskCmdRun;

    public static TopCentralTaskCmdRun build(TopCentralTaskCmd taskCmd,TopCentralProcessStepRun processStepRun){
        TopCentralTaskCmdRun taskCmdRun = new TopCentralTaskCmdRun();
        taskCmdRun.setTaskCmdId(taskCmd.getId());
        taskCmdRun.setTaskStatus(TaskStatusEnum.NOT_START.getValue());
        taskCmdRun.setProcessStepRunId(processStepRun.getId());
        //后续可能会使用
        taskCmdRun.setTaskCmd(taskCmd);
        return taskCmdRun;
    }
}
